/**
 * 
 */
package sob.me.threadapp.demo1;

import java.util.ArrayList;
import java.util.List;

/**
 * @author blackcore
 * @date 2014年1月17日
 * @describe
 */
public class Launcher {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// 获取要循环的对象列表
		List<String> sites = new ArrayList<String>();
		sites.add("BJ01");
		sites.add("BJ02");
		sites.add("BJ03");
		sites.add("BJ04");
		sites.add("BJ05");
		sites.add("JS01");
		sites.add("JS02");
		sites.add("JS03");
		sites.add("JS04");
		sites.add("JS05");
		sites.add("JS06");
		sites.add("JS07");
		sites.add("TJ01");
		sites.add("HB01");
		// 定义开启线程数
		Integer threadCount = 4;
		// 分页，每个线程处理的任务数
		boolean queueLessThreadCount = true;// 队列小于线程数，则只跑一个线程
		int pageSize = sites.size();
		if (sites.size() > 4) {
			pageSize = sites.size() / threadCount;
			if (sites.size() % threadCount > 0) {
				// 取余数大于零，则必须把pageSize加一个任务量，否则会出现计算所得的线程数比设定的线程数要多一个
				pageSize++;
			}
			queueLessThreadCount = false;
		}
		if (queueLessThreadCount) {
			// 队列任务总数小于线程总线，则不开多线程了
			Integer threadNo = 1;
			for (String item : sites) {
				List<String> handlist = new ArrayList<String>();
				handlist.add(item);
				PigThreadHandler run = new PigThreadHandler(threadNo, handlist);
				Thread thread = new Thread(run);
				thread.start();
				threadNo++;
			}
		} else {
			// 队列任务数大于开启线程总线，则分任务
			Pager<String> pager = new Pager<String>(sites, pageSize);
			for (int pi = 1; pi <= pager.totalPages; pi++) {
				List<String> handlist = pager.getObjects(pi);
				PigThreadHandler run = new PigThreadHandler(pi, handlist);
				Thread thread = new Thread(run);
				thread.start();
			}
		}

	}
}
